Business Intelligence generally refers to a category of software systems and applications used to improve business enterprise decision-making and governance. These software tools provide techniques for analyzing and leveraging enterprise applications and data. They are commonly applied to financial, human resource, marketing, sales, service provision, customer, and supplier analyses. More specifically, Business Intelligence tools can include reporting and analysis tools to analyze, forecast and present information, content delivery infrastructure systems to deliver, store and manage reports and analytics, data warehousing systems to cleanse and consolidate information from disparate sources, integration tools to analyze and generate workflows based on enterprise systems, database management systems to organize, store, retrieve and manage data in databases, such as relational, Online Transaction Processing (“OLTP”) and Online Analytic Processing (“OLAP”) databases, and performance management applications to provide business metrics, dashboards, and scorecards, as well as best-practice analysis techniques for gaining business insights.
OLAP data sources and tools are a subset of BI tools. There are a number of commercially available OLAP tools, such as, for example, Business Objects Voyager™, available from Business Objects™, an SAP® company, of San Jose, Calif. OLAP tools are report generation tools and are otherwise suited to ad hoc analyses. OLAP generally refers to a technique of providing fast analysis of shared multidimensional information stored in a database. OLAP systems provide a multidimensional conceptual view of data, including full support for hierarchies and multiple hierarchies. This framework is used because it is a logical way to analyze businesses and organizations. In some OLAP tools, the data is arranged and interrelated to simulate a multidimensional schema. The multidimensional schema means redundant information is stored. The redundancy comes from storing many different aggregations of the data. This allows users to initiate many different queries without a need to know how the data is organized.
OLAP tools are typically implemented in a multi-user client/server mode to offer consistently rapid responses to queries, regardless of database size and complexity. OLAP helps the user synthesize information through the use of an OLAP server that is specifically designed to support and operate on multidimensional data sources. The design of the OLAP server and the structure of the data are optimized for rapid ad hoc information retrieval in any orientation, as well as for fast, flexible calculation and transformation of raw data members on formulaic relationships.
The querying process for OLAP data sources can involve, depending on the specific implementation, Citing and executing a query. Multidimensional Expressions (“MDX”) is a query language for OLAP databases, like SQL, is a query language for relational databases. Thus, an MDX statement can be used to query for a result from an OLAP data source, i.e., an OLAP data cube. The MDX statements may resemble SQIL statements that are used to query for data arranged on rows and columns of a data cube. As with an SQL entry, each MDX query requires a data request (the “SELECT” clause), a starting point (the “FROM” clause), and a filter (the “WHERE” clause). These and other keywords provide the tools used to extract specific portions of data from a cube for analysis, e.g., to extract a slice of the cube.
In one application, MDX queries can be used to specify the addition of a calculation, i.e., a value, to a hierarchy of multidimensional data. There are two ways to achieve this: by using user scoped and query scoped commands. A calculation created with user scope commands persists until the user logs out. A calculation created with query scope commands persists until the end of the queries' evaluation. In MDX, an exemplary user scoped command is the “CREATE MEMBER” command:
CREATE MEMBER                [CubeName].[hierarchyName].[ParentName].[MemberName] AS MDX_Expression . . .In MDX an exemplary query scoped command is executed with the “WITH” clause:        
WITH MEMBER                [CubeName].[hierarchyName].[ParentName].[MemberName] AS MDX_Expression . . .The MDX_Expression determines the value of the calculation. The calculation need not be a dynamic value and a can be a static value.        
MDX expressions may also be used to remove a calculation from an OLAP hierarchy. Both the addition and removal of a calculation to/from an OLAP hierarchy results in changes to the hierarchy's metadata. OLAP hierarchy metadata describes the data objects in the OLAP hierarchy and the relationships between the data objects. The OLAP data objects can be grouped by their relationships to each other into a metadata object called an OLAP cube.
In another application, MDX queries can be used to create and query a set of members of an OLAP hierarchy. For example, an OLAP hierarchy may include a root member with three children members. A set may be defined to include some or all of the members of the OLAP hierarchy, e.g., a set can be defined to include the root's children.
There are mainly two ways for defining a set of members of an OLAP hierarchy. The first uses dynamic queries, i.e., queries that are evaluated at query execution time, while the second uses static queries, i.e., queries that are evaluated at the time the set is created with the results cached for later retrieval when the query is executed. Dynamic queries are generally preferred, as they offer greater degrees of optimization than static queries.
Static queries diminish the efficiency of OLAP tools because each time a set is created, the query defining the set is evaluated and its results are cached. If the set definition is composed of multiple sets, each constituent set is cached. Static queries thereby incur more data storage and OLAP access requests and cannot be optimized like dynamic queries.
However, static queries are more intuitive to users. This is so because changes to an OLAP hierarchy metadata, e.g., calculation changes that add or delete a calculation from an OLAP hierarchy, performed after a static query defining a set do not affect the results of the static query. The results of a static query are only affected by changes applied to the set since the last set evaluation, and not by changes applied to the OLAP hierarchy metadata. This is not the case with dynamic queries, which are evaluated entirely at evaluation time, also referred to as query evaluation time. Changes to an OLAP hierarchy metadata performed after a dynamic query defining a set are reflected in the results of the dynamic query.
For example, consider the OLAP hierarchy and the set of members illustrated in FIGS. 1A and 1B. OLAP hierarchy 100 is shown in FIG. 1A with a root node “R”, two children “A” and “E” and three children “B”, “C”, and “D”. A user creates a set 105, as shown in FIG. 1B, and defines it with an expression 110 to be the union of node “A” and its children. Evaluating the set against OLAP hierarchy 100 results in a set 115 containing the members {A, B, C, D}.
Now suppose the user adds a calculation “calc” to the OLAP hierarchy, with the calculation “calc” being a child of “A” resulting in OLAP hierarchy 120. Suppose further that after the OLAP hierarchy 100 and its metadata are modified to OLAP hierarchy 120, the user performs a query 125 modifying the set as the union of node “A”, its children, and a new member {E}.
As described above, the results of this query depend on whether the query is evaluated as a static query or as a dynamic query. If query 125 is evaluated as a static query, then its results are only affected by changes applied to the set since the last set evaluation. The last set evaluation returned set 115 containing members {A, B, C, D}. Because the children of node “A” at the time evaluated to “B”, “C”, and “D”, adding a new member “E” to the set results in a set 130 containing members {A, B, C, D, E}. That is, adding the calculation “calc” to OLAP hierarchy 100 does not affect the results of query 125 when evaluating it statically.
This is not the case if query 125 is evaluated dynamically. In this case, the union of “A”, “A.children”, and new member {E} is executed at the time query 125 is evaluated. Because the calculation “calc” is a child of “A” when query 125 is evaluated, A.children evaluates to {B, C, D, E, calc}. The query results therefore return a set 135 containing members {A, B, C, D, E, calc}. That is, adding the calculation “calc” to OLAP hierarchy 100 affects the results of query 125 when evaluating it dynamically.
Accordingly, since dynamic queries may be optimized and static queries return results that are consistent with a user's definition of a set, it would be desirable to provide techniques to enable users to use dynamic queries to evaluate sets while maintaining the behavior of static queries.